package br.com.gestacard.sync.entidade;


import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;

import org.hibernate.annotations.ForeignKey;

import com.powerlogic.jcompany.dominio.valida.PlcValidacaoUnificada;

@MappedSuperclass
@PlcValidacaoUnificada
public abstract class Funcionalidade extends AppBaseEntity {

	
	private static final long serialVersionUID = 2400783875091039111L;
	
	
	@Id @GeneratedValue(strategy=GenerationType.AUTO, generator = "SE_FUNCIONALIDADE")
	@Column (name = "ID_FUNCIONALIDADE", nullable=false, length=5)
	private Long id;
	
	
	@Column (name = "NOME", nullable=false, length=5)
	private String nome;
	
	@Column (name = "ENDERECO", nullable=true, length=5)
	private String endereco;
	
	
	@ManyToOne (targetEntity = FuncionalidadeEntity.class, fetch = FetchType.LAZY)
	@ForeignKey(name="FK_FUNC_FUNC")
	@JoinColumn (name = "ID_FUNCIONALIDADE_PAI", nullable=true)
	private Funcionalidade funcionalidade;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id=id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome=nome;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco=endereco;
	}

	public Funcionalidade getFuncionalidade() {
		return funcionalidade;
	}

	public void setFuncionalidade(Funcionalidade funcionalidade) {
		this.funcionalidade=funcionalidade;
	}

}
